
[dbo].[asi_DocumentCreateCopy]
CREATE PROCEDURE [dbo].[asi_DocumentCreateCopy]
@folderHierarchyKey uniqueidentifier,
@key uniqueidentifier,
@userKey uniqueidentifier,
@loggedInUserGroupKey uniqueidentifier = '00000000-0000-0000-0000-000000000000',
@documentName nvarchar(100) = null
AS
BEGIN
DECLARE @newDocumentKey uniqueidentifier, @newDocumentVersionKey uniqueidentifier, @documentKey uniqueidentifier
SET @newDocumentKey = NewID()
SET @newDocumentVersionKey = NewID()
INSERT INTO UniformRegistry (UniformKey, ComponentKey)
SELECT @newDocumentKey, ComponentKey
FROM ComponentRegistry
WHERE Name = 'Document'
AND InterfaceName = 'BusinessController'
INSERT INTO UniformRegistry (UniformKey, ComponentKey)
SELECT @newDocumentVersionKey, ComponentKey
FROM ComponentRegistry
WHERE Name = 'DocumentVersion'
AND InterfaceName = 'BusinessController'
exec asi_DocumentGetLatestKey @key, @documentKey OUT
INSERT INTO DocumentMain (
DocumentKey,
DocumentTypeCode,
DocumentName,
DocumentVersionKey,
DocumentStatusCode,
DocumentCode,
AlternateName,
Blob,
IsSystem,
AccessKey,
DefaultChildAccessKey,
DocumentDescription,
ContainsChildrenFlag,
BranchedFromDocumentKey,
RelatedDocumentVersionKey,
StatusUpdatedByUserKey,
StatusUpdatedOn,
UpdatedByUserKey,
UpdatedOn,
CreatedByUserKey,
CreatedOn)
SELECT @newDocumentKey,
a.DocumentTypeCode,
ISNULL(@documentName, a.DocumentName),
@newDocumentVersionKey,
CASE b.TrackVersionsFlag WHEN 0 THEN 40 ELSE 10 END,
a.DocumentCode,
a.AlternateName,
a.Blob,
0,
a.AccessKey,
a.DefaultChildAccessKey,
a.DocumentDescription,
a.ContainsChildrenFlag,
a.DocumentKey,
a.RelatedDocumentVersionKey,
@userKey,
GetDate(),
@userKey,
GetDate(),
@userKey,
GetDate()
FROM DocumentMain a inner join DocumentTypeRef b on a.DocumentTypeCode = b.DocumentTypeCode
WHERE a.DocumentKey = @documentKey
AND EXISTS(
SELECT 1
FROM AccessItem INNER JOIN UserToken ON AccessItem.Grantee = UserToken.Grantee OR AccessItem.Grantee = @loggedInUserGroupKey
WHERE AccessItem.AccessKey = a.AccessKey
AND UserToken.UserKey = @userKey
AND (AccessItem.Permission&3)>0)
exec asi_DocumentLinkDocument @folderHierarchyKey, @newDocumentVersionKey
END
GO